Code for ggplot2 plot
library(tidyverse)
library(scales)
library(plotly)
library(lubridate)
philly <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-12-03/tickets.csv")
totals <- philly %>%
mutate(month = month(issue_datetime),
day = day(issue_datetime),
wday = weekdays(issue_datetime),
text_month = months(issue_datetime)) %>%
group_by(text_month, month, day, wday) %>%
summarise(fines = sum(fine, na.rm = TRUE)) %>%
ungroup() %>%
arrange(month, day) %>%
mutate(week = ifelse(day == 1, 1,
ifelse(wday == "Sunday", 1, 0))) %>%
group_by(month) %>%
mutate(week = cumsum(week),
wday = str_sub(wday, 1, 3),
fine_txt = paste0("$",formatC(fines, format="f", big.mark=",", digits = 0)),
desc = paste(wday, text_month, day, 2017, "\n", fine_txt)) %>%
ungroup()
wday_vec <- c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")
totals$wday <- factor(totals$wday, levels = wday_vec)
month_vec <- c("January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December")
totals$text_month <- factor(totals$text_month,
levels = month_vec)
philly_calendar <- ggplot(totals, aes(x = wday, y = week, text = desc)) +
geom_tile(aes(fill = fines), colour = "white") +
facet_wrap(~text_month, scales = "free") +
scale_y_reverse() +
theme_minimal() +
scale_fill_viridis_c(labels = dollar) +
scale_x_discrete(position = "top") +
ylab("") + xlab("") + labs(fill = "Fines Issued") +
ggtitle("Philadelphia Parking Violations (2017)") +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.y = element_blank(),
strip.text.x = element_text(
size = 12, color = "black", face = "bold"),
plot.title = element_text(size = 14, hjust = 0.5))